//package com.source.code.demo;
//
//import java.io.IOException;
//import java.net.HttpURLConnection;
//import java.net.URL;
//
///**
// * @author wangchangjie
// * @date 2024/02/22
// */
//public class DownloadFilePollingUtil {
//
//    private static final int MAX_POLL_ATTEMPTS = 5; // 最大尝试次数
//    private static final int POLL_INTERVAL_MS = 1000; // 每次尝试间隔时间（毫秒）
//
//    public static Boolean downloadFileWhenAvailable(String fileUrl) {
//        int attemptCount = 0;
//        boolean isFileAvailable = false;
//
//        while (!isFileAvailable && attemptCount < MAX_POLL_ATTEMPTS) {
//            try {
//                HttpURLConnection conn = (HttpURLConnection) new URL(fileUrl).openConnection();
//                conn.setRequestMethod("HEAD");
//                conn.connect();
//
//                if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
//                    String contentType = conn.getContentType();
//                    long contentLength = conn.getContentLengthLong();
//
//                    // 根据Content-Type和Content-Length判断是否为预期的可下载文件
//                    if (contentType.startsWith("application/octet-stream") || // 常见的二进制文件类型
//                        contentType.startsWith("image/") || // 图片文件类型
//                        // ... 添加其他你认为合适的MIME类型检查
//                        (contentLength > 0)) { // 确保内容长度大于0
//
//                        // 判断条件可以根据实际情况调整
//                        isFileAvailable = true;
//                    }
//                }
//
//                conn.disconnect();
//            } catch (IOException e) {
//                // 可能网络问题或其他异常，记录日志但不中断轮询
//                LogUtil.printf("An error occurred during polling: " + e.getMessage());
//            }
//
//            if (!isFileAvailable) {
//                // 文件未就绪，等待一段时间再尝试
//                try {
//                    Thread.sleep(POLL_INTERVAL_MS);
//                } catch (InterruptedException ex) {
//                    Thread.currentThread().interrupt();
//                    break;
//                }
//                attemptCount++;
//            }
//        }
//
//        if (!isFileAvailable) {
//            LogUtil.printf("Maximum poll attempts reached, file still not available for download.");
//        }
//        return isFileAvailable;
//    }
//
//    public static void main(String[] args) {
//        String fileUrl = "http://timg.test.moredian.com:8002/temporary/2024/2/22/9/魔点测试企业3通讯录灰度机构_导入模板_1708566146323.csv";
//        Boolean b = DownloadFilePollingUtil.downloadFileWhenAvailable(fileUrl);
//        LogUtil.printf(b);
//    }
//}
